<script setup lang="ts">
// IM项目主应用组件
import { onMounted, watch } from 'vue'
import { useDevTools } from './composables/useDevTools'
import { useThemeTool } from './composables/useThemeTool'
import { useUIStore } from './store/ui'
import { useNotificationStore } from './store/notification'
const uiStore = useUIStore()
const { initTheme, applyTheme } = useThemeTool()
const notificationStore = useNotificationStore()
onMounted(() => {
  // 初始化主题系统
  console.log('初始化主题系统...')
  initTheme()
  // 初始化通知监听
  notificationStore.initListeners()

  // 延迟几秒后发送通知，让应用完全初始化
  setTimeout(() => {
    // 发送测试通知，使用UI Store中的系统通知设置
    // 增加图标配置
    notificationStore
      .showNotification(
        {
          title: '测试通知',
          body: '这是一条测试通知',
          // 使用基于项目根目录的相对路径
          icon: './resources/Logo.png', // 确保使用正确路径
          silent: false, // 确保通知发出声音
          urgency: 'critical', // 设置为高紧急度
          timeoutType: 'never' // 防止自动消失
        },
        {
          useSystemNotification: uiStore.useSystemNotification
        }
      )
      .then((id) => {
        console.log('通知ID:', id)
        // 再延迟几秒发送第二条通知
        setTimeout(() => {
          notificationStore.showNotification({
            title: '测试通知2',
            body: '这是第二条测试通知',
            icon: './resources/Logo.png',
            silent: false,
            urgency: 'critical'
          })
        }, 3000)
      })
      .catch((error) => {
        console.error('显示通知失败:', error)
      })
  }, 5000) // 延迟5秒发送

  // 输出当前通知设置
  console.log('系统通知设置:', uiStore.useSystemNotification ? '开启' : '关闭')
  // 监听主题变化
  watch(
    () => uiStore.theme,
    () => {
      applyTheme()
    },
    { immediate: true }
  )
  // 检查是否在Electron环境中
  if (window.electron?.ipcRenderer) {
    // 设置全局DevTools快捷键
    const { setupDevToolsShortcuts } = useDevTools()
    setupDevToolsShortcuts()
  }
})
</script>

<template>
  <router-view />
</template>

<style>
* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}

/* 确保全屏高度 */
html,
body,
#app {
  height: 100%;
  overflow: hidden; /* 防止整体页面滚动 */
}
</style>
